﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SILAS.Entidades;

namespace SILAS.DAO
{
    public class SectorDAO : MasterDAO, ISectorDAO
    {
        /*public List<Sector> GetAllFromSectorByCriterio(string criterio)
        {
            /*var query = from p in context.Sectors
                        select p;

            if (criterio != null)
            {
                query = query.Where(p => p.ApPaterno.ToUpper().StartsWith(criterio.ToUpper()) ||
                                    p.ApPaterno.ToUpper().Contains(criterio.ToUpper())
                                    );
            }

            return query.OrderBy(p => p.IdSector).Skip(0).Take(10).ToList();
            
        }*/

        public void agregarSector(Sector sector)
        {
            foreach (var item in sector.Rutas)
            {
                var ruta = context.Rutas.Find(item.Id);
                sector.Rutas.Add(ruta);
            }

            context.Sectors.Add(sector);
            context.SaveChanges();

            /*if (sector != null)
            {
                var s= new Sector();

                s.NroFamilias = sector.NroFamilias;
                s.EstaSalud = sector.EstaSalud;
                s.EnergElect = sector.EnergElect;
                s.NroFamAcceso = sector.NroFamAcceso;
                s.IdCategoria = sector.IdCategoria;
                s.IdUbigeo = sector.IdUbigeo;
                s.Ubicacion.Altura = sector.Ubicacion.Altura;
                s.Ubicacion.CoorX = sector.Ubicacion.CoorX;
                s.Ubicacion.CoorY = sector.Ubicacion.CoorY;


                foreach (var item in sector.Rutas)
                {
                    var ruta = context.Rutas.Find(item.Id);
                    s.Rutas.Add(ruta);
                }

                context.Sectors.Add(s);
                context.SaveChanges();
            }*/
  
        }

        public void modificarSector(Sector sector)
        {
            var existe = context.Sectors.Find(sector.Id);

            if (existe != null)
            {
                existe.NroFamilias = sector.NroFamilias;
                existe.EstaSalud = sector.EstaSalud;
                existe.EnergElect = sector.EnergElect;
                existe.NroFamAcceso = sector.NroFamAcceso;
                existe.IdCategoria = sector.IdCategoria;
                existe.Ubicacion.Altura = sector.Ubicacion.Altura;
                existe.Ubicacion.CoorX = sector.Ubicacion.CoorX;
                existe.Ubicacion.CoorY = sector.Ubicacion.CoorY;

                context.Entry(existe).State = System.Data.EntityState.Modified;
                context.SaveChanges();

            }
        }


        public Sector getSectorbyId(int id)
        {
            return context.Sectors.Find(id);
        }





        public List<Categoria> ListCategorias()
        {
            var query = (from p in context.Categorias
                         orderby p.Descripcion ascending
                         select p).ToList();
            return query;
        }


        public List<Sector> ListarAllSectores()
        {
            var query = (from p in context.Sectors
                         orderby p.Ubigeo.Nombre ascending
                         select p).ToList();
            return query;
        }


        public Sector getSectorbyUbigeo(string idubigeo)
        {
            var query = from p in context.Sectors
                        select p;

            if (idubigeo != null)
            {
                query = query.Where(p => p.IdUbigeo.Equals(idubigeo));
            }

            return query.SingleOrDefault();
        }
    }
}
